﻿#include <stdio.h>
#include <iostream>
using namespace std;

//class A1
//{
//public :
//	void f1()
//	{
//		cout << "f1()" << endl;
//	}
//private :
//	int _a;
//
//};
//
//class A2
//{
//public :
//	void f2()
//	{}
//};
//
//class A3
//{
//
//};

//int main()
//{
//	cout << sizeof(A1) << endl;
//	cout << sizeof(A2) << endl;
//	cout << sizeof(A3) << endl;
//	return 0;
//}

//class A
//{
//	
//public:
//	void Print()
//	{
//		//cout << "Print()" << endl;
//		cout << _a << endl;
// 	}
//private:
//	int _a;
//};

//class A
//{
//public:
//	void PrintA()
//	{
//		cout << _a << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	A* p = nullptr;
//	p->Print();
//	return 0;
//}

//int main()
//{
//
//	A* p = nullptr;
//	p->PrintA();
//
//	return 0;
//
//}

//class Data
//{
//public:
//	void Inint(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		cout << _year <<"/" << _month << "/" << _day << endl;
//	}
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Data d1;
//	Data d2;
//	d1.Inint(2023, 10, 15);
//	d2.Inint(1, 2, 3);
//	d1.Print();
//	d2.Print();
//
//	return 0;
//}
//#define ADD(X,Y) ((X) + (Y))
//
//int main()
//{
//
//	int x = ADD(5*2, 2*3);
//	cout << x << endl;
//
//	return 0;
//}

//inline int Add(int x, int y)
//{
//	int c = x + y;
//	int d = x * y;
//	int q = x / y;
//	int e = x * y;
//	int k = x * y;
//	int l = x * y;
//	int p = x * y;
//	int o = x * y;
//	
//
//	return x / y;
//
//}
//
//int main()
//{
//	int ret1 = Add(1, 2);
//	int ret3 = Add(1, 2);
//
//
//	// 优点：不用建立栈帧，提高效率
//	
//	return 0;
//}

//#include <time.h>
//struct A { int a[10000]; };
//
//void TestFunc1(A aa) {}
//
//void TestFunc2(A& aa) {}
//
//void TestRefAndValue()
//{
//	A a;
//	// 以值作为函数参数
//	size_t begin1 = clock();
//	for (size_t i = 0; i < 10000; ++i)
//		TestFunc1(a);
//	size_t end1 = clock();
//
//	// 以引用作为函数参数
//	size_t begin2 = clock();
//	for (size_t i = 0; i < 10000; ++i)
//		TestFunc2(a);
//	size_t end2 = clock();
//
//	// 分别计算两个函数运行结束后的时间
//	cout << "TestFunc1(A)-time:" << end1 - begin1 << endl;
//	cout << "TestFunc2(A&)-time:" << end2 - begin2 << endl;
//}
//
//void TestConstRef()
//{
//	const int a = 10;
//	//int& ra = a;  // 该语句编译时会出错，a为常量
//	const int& ra = a;
//	// int& b = 10; // 该语句编译时会出错，b为常量
//	const int& b = 10;
//	double d = 15.45;
//	//int& rd = d; // 该语句编译时会出错，类型不同
//	const int& rd = d;
//}
//
//int main()
//{
//
//	// TestRefAndValue();
//
//	TestConstRef();
//
//	return 0;
//}

int main()
{
	int* p = nullptr;
	std::cout << sizeof(p) << endl;

	return 0;
}


